package object;

/**
 * 多态调用成员特点
 * 调用成员变量：编译看左，运行也看左
 * 调用成员方法：编译看左，运行看右
 */

/**
 * 多态优势
 * 使用父类型作为参数，可以接受所有子类对象
 * 多态弊端
 * 无法使用子类的特有功能，需要通过类型转换
 * 类型转换语法：需要转换的类型  变量名 = (需要转换的类型) 原来的数据
 */

public class PolyClass2 {
	public static void main(String[] args) {
		Sport s1 = new Football();
		Football f1 = (Football) s1;
		System.out.println(f1.name);
		s1.doSomething();
	}
}


// 父类
class Sport {
	String name = "all";

	public void doSomething() {
		System.out.println("sport starting");
	}
}

// 子类
class Football extends Sport {
	String name = "football";

	@Override
	public void doSomething() {
		System.out.println("football starting");
	}
}

class Basketball extends Sport {
	String name = "basketball";
	@Override
	public void doSomething() {
		System.out.println("basketball starting");
	}
}
